Redundancy is an important storage concept involving extra data written across the array, organized so that the failure of one (sometimes more) disks in the array will not result in loss of data. A failed disk may be replaced by a new one, and the data on it reconstructed from the remaining data and the extra data. A redundant array allows less data to be stored. For instance, a 2-disk RAID 1 (mirrored) array loses half of the total capacity that would have otherwise been available using both disks independently, and a RAID 5 array with several disks loses the capacity of one disk.
RAID schemes manage a group of storage units such as disks so as to achieve data reliability and increased input/output performance. When multiple physical disks are set up to use RAID technology, they are said to be in a RAID array (or members of a RAID group).
Different RAID “levels” use one or more of the following techniques: striping, mirroring, and parity. Striping refers to splitting data across more than one disk; this enhances performance by allowing sequences of data to be read simultaneously from multiple disks. In mirroring, data is copied to more than one disk to expedite reading data, however, mirroring may slow writing if both disks are required by the configuration to confirm that the data has been correctly written. Parity involves redundant data stored to provide fault tolerance, however, speed is typically adversely affected.
RAID 0 schemes use striped disks which distribute data across several disks in a way that gives improved speed and full capacity, but all data on all disks will be lost if any one disk fails. RAID 1 schemes use mirrored settings/disks to achieve a real-time backup solution. Two (or more) disks each store exactly the same data, at the same time, and at all times. Data is not lost as long as one disk survives. Total capacity of the array is simply the capacity of one disk. At any given instant, each disk in the array is simply identical to every other disk in the array. RAID 2 does not use conventional mirroring, striping or parity. Data is split at the bit level and distributed over a number of data disks and a number of redundancy disks. Redundant bits may be computed and written to dedicated ECC disks using Hamming error correction codes.
In RAID 3, data is striped across multiple disks at a byte level and parity information is sent to a dedicated parity disk. The failure of any disk in the array, including the parity disk, can be tolerated. RAID 4 stripes data across many disks in blocks, rather than bytes as in RAID 3, so as to improve performance, and, like RAID 3, provides fault tolerance through a dedicated parity disk. RAID 5 uses striped disks with parity, combining three or more disks so as to protect data against loss of any one disk; the storage capacity of the array is reduced by one disk. RAID 6 provides striped disks with dual parity, enabling recovery even from the loss of two disks.
Conventional disk arrays typically provide a selectable one of some or all of these RAID levels. RAID levels may be hardware based, software based and firmware based. Software based RAID schemes are typically implemented in the operating system and present as a single drive to applications running upon the operating system.
An example of a state of the art data storage system is U.S. Pat. No. 5,720,025 to Wilkes et al.
The disclosures of all publications and patent documents mentioned in the specification, and of the publications and patent documents cited therein directly or indirectly, are hereby incorporated by reference.